import axios from 'axios'
import { logger } from './logger'

const OPENAI_API_KEY = process.env.OPENAI_API_KEY
const OPENAI_API_URL = 'https://api.openai.com/v1/chat/completions'

// OpenAI API 客户端
const openai = axios.create({
    baseURL: OPENAI_API_URL,
    headers: {
        'Authorization': `Bearer ${OPENAI_API_KEY}`,
        'Content-Type': 'application/json'
    }
})

// 获取参数建议
export const getSuggestion = async (param: any, value: any) => {
    try {
        const response = await openai.post('', {
            model: 'gpt-4',
            messages: [
                {
                    role: 'system',
                    content: `你是一个 AI 图像生成专家，擅长优化 Stable Diffusion 的参数配置。
                    当前正在处理类型为 ${param.type} 的参数 ${param.name}，
                    需要基于用户输入的值 ${value} 提供优化建议。`
                },
                {
                    role: 'user',
                    content: `请根据以下参数信息提供优化建议：
                    - 参数名称：${param.name}
                    - 参数类型：${param.type}
                    - 当前值：${value}
                    - 组件类型：${param.component}
                    - 节点ID：${param.nodeId}`
                }
            ],
            temperature: 0.7,
            max_tokens: 200
        })

        return response.data.choices[0].message.content
    } catch (error) {
        logger.error('AI suggestion error:', error)
        throw new Error('获取 AI 建议失败')
    }
}

// 优化提示词
export const optimizePrompt = async (prompt: string) => {
    try {
        const response = await openai.post('', {
            model: 'gpt-4',
            messages: [
                {
                    role: 'system',
                    content: `你是一个 Stable Diffusion 提示词专家，擅长优化提示词以生成更好的图像。`
                },
                {
                    role: 'user',
                    content: `请优化以下提示词，使其能生成更好的图像效果：${prompt}`
                }
            ],
            temperature: 0.7,
            max_tokens: 300
        })

        return response.data.choices[0].message.content
    } catch (error) {
        logger.error('Prompt optimization error:', error)
        throw new Error('提示词优化失败')
    }
}

// 生成工作流描述
export const generateDescription = async (workflow: any) => {
    try {
        const response = await openai.post('', {
            model: 'gpt-4',
            messages: [
                {
                    role: 'system',
                    content: `你是一个 AI 工作流专家，擅长分析和描述图像生成工作流。`
                },
                {
                    role: 'user',
                    content: `请分析以下工作流配置，生成一段简洁的描述：${JSON.stringify(workflow)}`
                }
            ],
            temperature: 0.7,
            max_tokens: 200
        })

        return response.data.choices[0].message.content
    } catch (error) {
        logger.error('Description generation error:', error)
        throw new Error('生成描述失败')
    }
}